package com.ppx.util;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author wangxiaotao
 * @create 2021-05-25-21:36
 */
public class JsoupTool {
	public static Document page;

	/**
	 * 正则匹配获取
	 * @param regex 正则表达式
	 * @param attributeKey  html中的唯一标识
	 * @param attributeValue id的具体参数
	 * @return json形式的字符串
	 */
	public static String getInformation(String regex , String attributeKey, String attributeValue){
		String result=null;
		//表达式对象
		Pattern p = Pattern.compile(regex);
		//创建Matcher对象
		Elements pageElements = page.getElementsByAttributeValue(attributeKey,attributeValue);
		Matcher m = p.matcher(pageElements.toString());
		if(m.find()) {  //该方法扫描输入的序列，查找与该模式匹配的一个子序列
			result=m.group();
		}
		return result;
	}

	/**
	 * @return statistic data json 字符串
	 */
	public static String getStatisticInformation(String getdata) {
		Element elementById = page.getElementById(getdata);
		//由于在借鉴的过程发现。json数据的内容及格式会发生改变正则匹配不起作用。所以使用切割字符串的方法。
		String strOrigin = elementById.toString();
		strOrigin=strOrigin.replace("<script id=\"getStatisticsService\">try { window.getStatisticsService = ", "");
		return strOrigin;
	}

	//获取整个界面
	public static void getPageByJSoup(String url,String USER_AGENT,String HOST,String REFERER) throws IOException {
		try {
			page= Jsoup.connect(url).timeout(30000).userAgent(USER_AGENT).header("Host", HOST).header("Referer", REFERER).get();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
